package mysql8学习.高级.第17章_其他数据库日志;

/**
 * 5.3查看日志
 * 当MySQL创建二进制日志文件时，先创建一个以  filename 为名称、以".index”为后缀的文件,
 * 再创建一个以filename"为名称、以“00001”为后缀的文件。
 * MySQL服务重新启动一次，以0000为后缀的文件就会增加一个，并且后缀名按1递增。
 * 即日志文件的个数与MySQL服务启动的次数相同;
 * 如果日志长度超过了max_binlog_size 的上限(默认是1GB)，就会创建一个新的日志文件。
 *
 * mysqlbinlog -v "binlog所在位置";  -v 可以使人容易看
 * #可查看多数帮助
 * mysqlbinlog --no-defaults --help
 * #直看最后100行
 * mysqlbinlog --no-defaults --base64-output=decode-rows -vv 日志名 |tail -100
 * #根据position查找
 * mysqlbinlog --no-defaults --base64-output=decode-rows -vv 日志名 |grep -A 20
 * ”4939002'
 *
 * 上面这种办法读取出binlog日志的全文内容比较多,不容易分辨查看到pos点信息，
 * 下面介绍一 种更为方便的查询
 * show binlog events [IN 'log-name'] [FROM pos] [LIMIT [offset,] row_ count];
 * ●IN 'log_name':指定要查询的binlog文件名(不指定就是第一个binlog文件)
 * ●FROM pos:指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
 * ●LIMIT [offset]: 偏移量(不指定就是0)
 * ●row_count :查询总条数(不指定就是所有行)
 *
 * show binlog events in "日志名";
 *
 *
 * 除此之外，binlog还有2种格式，分别是Statement和Mixed
 * ●Statement
 * 每一条会修改数据的sql都会记录在binlog中。
 * 优点:不需要记录每一行的变化， 减少了binlog日志量，节约了I/O,提高性能。
 * ● Row
 * 5.1.5版本的MySQL才开始支持row level的复制，它不记录sql语句.
 * 上下文相关信息，仅保存哪条记录被修改。
 * 优点: row level的日志内容会非常清楚的记录下每一行数据修改的细节。
 * 而且不会出现某些特定情况下的存储过程，或function,
 * 以及trigger的调用和触发无法被正确复制的问题。
 * ●** Mixed
 * 从5.1.8版本开始，MySQL提供了Mixed格式，实际上就是Statement与Row的结合。
 */
public class E3_查看日志 {
}
